﻿using System;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Promocot.Models;
using System.IO;
using System.Data;
using System.Text;
using System.Web.UI;
using System.Collections.Generic;
using iTextSharp.text.html.simpleparser;

namespace Promocot.Controllers
{
    public class PromocionController : Controller
    {
        //
        // GET: /Promocion/
        ClientomaticDBContainer almacen = new ClientomaticDBContainer();
        

        public ActionResult Index()
        {
            try
            {
                var id = (Int32)Session["usuarioID"];
                var listaPro = almacen.PromocionSet.Where<Promocion>(y => y.cod_usuario == id && y.eliminado == false).ToList<Promocion>();
                return View(listaPro);
            }
            catch (Exception) {


                return RedirectToAction("index", "Home");
            }
        }

        public ActionResult Creap() {

            var id = (Int32)Session["usuarioID"];
            GenPromocion nuevo = new GenPromocion();
            nuevo.promo = new Promocion();
            
            nuevo.det_tarifas = new System.Collections.Generic.List<Costopromocion>();
            nuevo.imagenes = new System.Collections.Generic.List<Recurso>(); 
            nuevo.promo.cod_empresa = (Int32)Session["empresaID"];
            nuevo.promo.cod_usuario = (Int32)Session["usuarioID"];
            nuevo.promo.Destino = new Destino();

            ViewBag.monedas = almacen.MonedaSet.ToList<Moneda>();
            ViewBag.proveedores = almacen.ProovedorSet.ToList<Proovedor>();
            ViewBag.promociones = almacen.PromocionSet.Where<Promocion>(y => y.cod_usuario == id).ToList<Promocion>();
            ViewBag.clas = (almacen.ClasificacionSet.Where<Clasificacion>(p => p.cod_empresa == nuevo.promo.cod_empresa && p.nivel == false).ToList<Clasificacion>());
            ViewBag.destinos = (almacen.DestinoSet.Where<Destino>(p => p.Empresa.cod_empresa == nuevo.promo.cod_empresa).ToList<Destino>());
            ViewBag.temporadas = (almacen.TemporadaSet.Where<Temporada>(p => p.Empresa.cod_empresa == nuevo.promo.cod_empresa).ToList<Temporada>());
            return View("Crear",nuevo);
        }

        public PartialViewResult Crear() 
        {

            GenPromocion gp = new GenPromocion();
            gp.promo.cod_empresa = (Int32)Session["empresaID"];
            gp.promo.cod_usuario = (Int32)Session["usuarioID"];
            gp.promo.activa = 0;
            gp.promo.grupo = "VACIO-INFO ADICIONAL" + DateTime.Now.ToString();
            ViewBag.monedas = almacen.MonedaSet.ToList<Moneda>();
            ViewBag.proveedores = almacen.ProovedorSet.Where<Proovedor>(pr => pr.cod_empresa == gp.promo.cod_empresa).ToList<Proovedor>();
            ViewBag.promociones = almacen.PromocionSet.Where<Promocion>(pr => pr.cod_empresa == gp.promo.cod_empresa).ToList<Promocion>();
            ViewBag.clas = (almacen.ClasificacionSet.Where<Clasificacion>(p => p.cod_empresa == gp.promo.cod_empresa).ToList<Clasificacion>());
            ViewBag.destinos = (almacen.DestinoSet.Where<Destino>(p => p.Empresa.cod_empresa == 1).ToList<Destino>());
            return PartialView(gp);
        }

        public ActionResult Editar(Int32 id) {

            GenPromocion promo_edit = new GenPromocion();
            
            promo_edit.promo = almacen.PromocionSet.Where<Promocion>(p => p.cod_promocion == id).Single<Promocion>();
            promo_edit.det_tarifas = almacen.CostopromocionSet.Where<Costopromocion>(cp => cp.cod_promocion == id).ToList<Costopromocion>();
            promo_edit.imagenes = almacen.RecursoSet.Where<Recurso>(r => r.solo_usado_en_cod == id).ToList<Recurso>();
            ViewBag.monedas = almacen.MonedaSet.ToList<Moneda>();
            ViewBag.proveedores = almacen.ProovedorSet.Where<Proovedor>(pr => pr.cod_empresa == promo_edit.promo.cod_empresa).ToList<Proovedor>();
            ViewBag.promociones = almacen.PromocionSet.Where<Promocion>(pr => pr.cod_empresa == promo_edit.promo.cod_empresa).ToList<Promocion>();
            ViewBag.clas = (almacen.ClasificacionSet.Where<Clasificacion>(p=>p.cod_empresa==promo_edit.promo.cod_empresa).ToList<Clasificacion>());
            ViewBag.destinos = (almacen.DestinoSet.Where<Destino>(p => p.Empresa.cod_empresa == promo_edit.promo.cod_empresa).ToList<Destino>());
            ViewBag.temporadas = (almacen.TemporadaSet.Where<Temporada>(p => p.Empresa.cod_empresa == promo_edit.promo.cod_empresa).ToList<Temporada>());
            return View("Crear", promo_edit);
        }

        [HttpPost][ValidateInput(false)]
        public JsonResult registrar(FormCollection form, GenPromocion actual)
        {
            Resultado send;    
                try
                {
                    Int32 id = (Int32)Session["empresaID"];
                    Int32 idd = Int32.Parse(form.Get("destino"));

                    Empresa empActual = almacen.EmpresaSet.Where(emp => emp.cod_empresa == id).Single<Empresa>();
                    actual.promo.Empresa = empActual;
                    actual.promo.cod_usuario = (Int32)Session["usuarioID"];
                    
                    actual.promo.activa = 0;
                    actual.promo.grupo = "VACIO-INFO ADICIONAL" + DateTime.Now.ToString();
                    

                    if (ModelState.IsValid)
                    {

                        actual.promo.Destino = almacen.DestinoSet.Where(des => des.Id == idd).Single<Destino>();

                        /*Si se creo, entonces hago un registro de logs por promocion*/
                        Promocion_Status log = new Promocion_Status();
                        log.cod_promocion = actual.promo.cod_promocion;
                        log.observacion = "Se creo la promocion: " + actual.promo.titulo + " por el usuario: " + actual.promo.Usuario.nombre;
                        log.fecha_hora = DateTime.Now;
                        almacen.Promocion_StatusSet.AddObject(log);
                        almacen.SaveChanges();

                        Directory.CreateDirectory(this.Server.MapPath("~/Content/Recursos") + "/promo" + actual.promo.cod_promocion.ToString());

                    }
                    else {

                        send = new Resultado();
                        send.id = 0;
                        send.status = "Error";
                        send.mensaje = "No se pudo crear la promocion. Revise los parametros colocados";
                        return Json(send, JsonRequestBehavior.AllowGet);
                    
                    }


                }
                catch (Exception a)
                {
                    
                    send = new Resultado();
                    send.id = 0;
                    send.status = "Error";
                    send.mensaje = "No se pudo crear la promocion. Revise los parametros colocados:"+a.Message;
                    return Json(send, JsonRequestBehavior.AllowGet);
                }
            

            ViewBag.monedas = almacen.MonedaSet.ToList<Moneda>();
            ViewBag.tarifas = almacen.CostopromocionSet.Where<Costopromocion>(o => o.cod_promocion == actual.promo.cod_promocion).ToList<Costopromocion>();

            send = new Resultado();
            send.id = actual.promo.cod_promocion;
            send.status = "Exito";
            send.mensaje = "La promocion \'" + actual.promo.titulo + "\' ha sido creada satisfactoriamente";
            return Json(send, JsonRequestBehavior.AllowGet);
        }

        [HttpPost]
        public ActionResult registrar_moneda(FormCollection form) {

            Costopromocion nuevo = new Costopromocion();

            nuevo.cod_moneda = Int32.Parse(form.Get("tipo_moneda"));
            nuevo.monto = Double.Parse(form.Get("monto"));
            nuevo.descripcion = form.Get("t_desc");
            nuevo.cod_promocion = Int32.Parse(form.Get("cod_promo"));


            almacen.CostopromocionSet.AddObject(nuevo);
            almacen.SaveChanges();


            Promocion actual = almacen.PromocionSet.Single<Promocion>(p=>p.cod_promocion==nuevo.cod_promocion);
            ViewBag.costos = actual.Costopromocion.Count();
            ViewBag.monedas = almacen.MonedaSet.ToList<Moneda>();
            ViewBag.tarifas = almacen.CostopromocionSet.Where<Costopromocion>(o => o.cod_promocion == actual.cod_promocion).ToList<Costopromocion>();
            return View("promo_saved", actual);
        }

        public ActionResult detalle(Int32 id) {

            Promocion detal = almacen.PromocionSet.Single<Promocion>(a => a.cod_promocion == id);
            ViewBag.imagenes = almacen.RecursoSet.Where<Recurso>(r => r.solo_usado_en_cod == id).ToList<Recurso>();
            return View(detal);
        }

        public ActionResult recursos(Int32 id) {
            ViewBag.id = id;
            Promocion actual = almacen.PromocionSet.Single<Promocion>(r => r.cod_promocion == id);
            return View(actual);
        }

        public ActionResult Vista2(Int32 id) {


            GenPromocion genPromo = new GenPromocion();

            genPromo.promo = almacen.PromocionSet.Where<Promocion>(pr => pr.cod_promocion == id).Single<Promocion>();
            genPromo.det_tarifas = almacen.CostopromocionSet.Where<Costopromocion>(t => t.cod_promocion == id).ToList<Costopromocion>();
            genPromo.imagenes = almacen.RecursoSet.Where<Recurso>(rec => rec.solo_usado_en_cod == id).ToList<Recurso>();

            ViewData.Model = genPromo;
            return PartialView("vista2", genPromo);
        }

        [HttpPost]
        public ActionResult dtjson(GenPromocion actual) {


            almacen.CostopromocionSet.AddObject(actual.costop);
            almacen.SaveChanges();

            String result = "<tr><td>Moneda</td><td>Costo</td><td>Observacion</td></tr>";


            var lista = almacen.CostopromocionSet.Where<Costopromocion>(c => c.cod_promocion == actual.costop.cod_promocion).ToList<Costopromocion>();

            foreach (var cp in lista)
            {

                result += "<tr id=\"dt" + cp.Id + "\"><td>" + cp.Moneda.abreviacion + "</td><td>" + cp.monto + "</td><td>" + cp.descripcion + "</td><td><a href=\"#\" id=\"edit_dt\" onclick=\"procesar_dt(" + cp.Id + ")\">Editar</a></td><td>Eliminar</td></tr>";

            }
            return Content(result, "text/html");
        }

        public ActionResult detalle_tarifa(Int32 id) {


            Promocion actual = almacen.PromocionSet.Single<Promocion>(a => a.cod_promocion == id);
            ViewBag.monedas = almacen.MonedaSet.ToList<Moneda>();
            //return PartialView(actual);
            return Content("All was done perfectly","text/html");
        }

        public ActionResult cargar_recurso(FormCollection form,HttpPostedFileWrapper direccion)
        {

            var id = Int32.Parse(form.Get("rec_promo"));

            Promocion toprom = almacen.PromocionSet.Single<Promocion>(p=>p.cod_promocion==id);

            Recurso nuevo = new Recurso();

            nuevo.cod_clasificacion = toprom.cod_clasificacion;
            nuevo.cod_empresa = toprom.cod_empresa;
            nuevo.nombre = form.Get("rec_nombre");
            nuevo.tipo = int.Parse(form.Get("rec_tipo"));
            nuevo.solo_usado_en_tipo = 1;
            nuevo.solo_usado_en_cod = 1;

            var path = "";
            var fileName = "";
            if (direccion.ContentLength > 0)
            {
                //Por defecto toma el nombre del archivo
                fileName = Path.GetFileName(direccion.FileName);
                
                //Si es elheaedr, crea el header.
                if(nuevo.tipo == 2 /*Caso en el que es el header*/){
                    fileName = Path.GetFileName("header_" + toprom.cod_promocion + Path.GetExtension(direccion.FileName));
                }




                path = Path.Combine(Server.MapPath("~/Content/Recursos"), fileName);
                direccion.SaveAs(path);
            }
            if (nuevo.tipo != 3)
            {
                /*actual.direccion = path;*/

                nuevo.direccion = Request.Url.Authority + "/Content/Recursos/" + fileName;

            }

            return Content("All was done perfectly", "text/html");
        }

        public JsonResult Cargar(FormCollection form, HttpPostedFileBase fileData)
        {

            var id = Int32.Parse(Request.Params.Get("rec_promo"));
            Promocion toprom = almacen.PromocionSet.Single<Promocion>(p => p.cod_promocion == id);
            Recurso nuevo = new Recurso();

            nuevo.cod_clasificacion = toprom.cod_clasificacion;
            nuevo.cod_empresa = toprom.cod_empresa;
            nuevo.nombre = Request.Params.Get("rec_nombre");
            nuevo.tipo = int.Parse(Request.Params.Get("rec_tipo"));
            nuevo.solo_usado_en_tipo = 1;
            nuevo.solo_usado_en_cod = id;
            if (nuevo.tipo != 3)
            {
                nuevo.direccion = "http://"+Request.Url.Authority + "/Content/Recursos/promo"+id.ToString()+"/"+fileData.FileName;
            }
            almacen.RecursoSet.AddObject(nuevo);
            almacen.SaveChanges();
            var fileName = this.Server.MapPath("~/Content/Recursos/promo"+id.ToString()+"/" + System.IO.Path.GetFileName(fileData.FileName));
            fileData.SaveAs(fileName);

            //mando un resultado a la vista mediante Json
            Resultado send = new Resultado();
            send.id = 0;
            send.status = "Exito";
            send.mensaje = "La imagen ha sido cargada satisfactoriamente";

            return Json(send,JsonRequestBehavior.AllowGet);
        }

        [HttpPost][ValidateInput(false)]
        public JsonResult Actualizar(GenPromocion editPromo){

            Resultado send = new Resultado();


            if (ModelState.IsValid)
            {

                editPromo.promo.cod_empresa = (Int32)Session["empresaID"];
                editPromo.promo.cod_usuario = (Int32)Session["usuarioID"];
                editPromo.promo.activa = 0;
                editPromo.promo.grupo = "VACIO-INFO ADICIONAL" + DateTime.Now.ToString();

                Promocion promoDB = almacen.PromocionSet.Single<Promocion>(pr => pr.cod_promocion == editPromo.promo.cod_promocion);

                promoDB.activa = editPromo.promo.activa;
                promoDB.cod_clasificacion = editPromo.promo.cod_clasificacion;
                promoDB.cod_empresa = editPromo.promo.cod_empresa;
                promoDB.cod_promocion = editPromo.promo.cod_promocion;
                promoDB.cod_proveedor = editPromo.promo.cod_proveedor;
                promoDB.cod_usuario = editPromo.promo.cod_usuario;
                promoDB.descripcion = editPromo.promo.descripcion;
                promoDB.grupo = editPromo.promo.grupo;
                promoDB.orden = editPromo.promo.orden;
                promoDB.status = editPromo.promo.status;
                promoDB.subtitulo = editPromo.promo.subtitulo;
                promoDB.tags = editPromo.promo.tags;
                promoDB.tarifa_consolidada = editPromo.promo.tarifa_consolidada;
                promoDB.tarifa_consolidada_moneda = editPromo.promo.tarifa_consolidada_moneda;
                promoDB.tarifa_consolidada_tipo = editPromo.promo.tarifa_consolidada_tipo;
                promoDB.titulo = editPromo.promo.titulo;
                promoDB.valida_desde = editPromo.promo.valida_desde;
                promoDB.valida_hasta = editPromo.promo.valida_hasta;
                

                
                    almacen.SaveChanges();
                
                send.id = editPromo.promo.cod_promocion;
                send.status = "Exito";
                send.mensaje = "La promocion "+promoDB.titulo+" ha sido actualizada";
            }
            else {

                send.id = 0;
                send.status = "Error";
                send.mensaje = "Todo mal!";
            }

            
            return Json(send,JsonRequestBehavior.AllowGet);
        }

        public ActionResult Vista(Int32 id) {


            GenPromocion genPromo = new GenPromocion();

            genPromo.promo = almacen.PromocionSet.Where<Promocion>(pr => pr.cod_promocion == id).Single<Promocion>();
            genPromo.det_tarifas = almacen.CostopromocionSet.Where<Costopromocion>(t => t.cod_promocion == id).ToList<Costopromocion>();
            genPromo.imagenes = almacen.RecursoSet.Where<Recurso>(rec => rec.solo_usado_en_cod == id).ToList<Recurso>();

            ViewData.Model = genPromo;
            return PartialView(genPromo);
        }

        [HttpGet]
        public ActionResult Edit_dt(Int32 id) {

            Costopromocion cp_actual = almacen.CostopromocionSet.Where<Costopromocion>(cp => cp.Id == id).Single<Costopromocion>();
            ViewBag.monedas = almacen.MonedaSet.ToList<Moneda>();

            //return Content("<h1>Perfecto: " + id + "</h1>", "text/html");
            return PartialView(cp_actual);
        }

        [HttpPost]
        public JsonResult Actualizar_dt(Costopromocion edit_cp){



            Costopromocion bd_cp = almacen.CostopromocionSet.Where<Costopromocion>(cp => cp.Id == edit_cp.Id).Single<Costopromocion>();

            bd_cp.cod_moneda = edit_cp.cod_moneda;
            bd_cp.descripcion = edit_cp.descripcion;
            bd_cp.monto = edit_cp.monto;


            if (TryUpdateModel(bd_cp))
            {
                almacen.SaveChanges();
            }
        
        Resultado send = new Resultado();

            send.id = edit_cp.Id;
            send.status = "Exito";

            String result = "<tr><td>Moneda</td><td>Costo</td><td>Observacion</td></tr>";


            var lista = almacen.CostopromocionSet.Where<Costopromocion>(c => c.cod_promocion == edit_cp.cod_promocion).ToList<Costopromocion>();

            foreach (var cp in lista)
            {
                result += "<tr id=\"dt" + cp.Id + "\"><td>" + cp.Moneda.abreviacion + "</td><td>" + cp.monto + "</td><td>" + cp.descripcion + "</td><td><a href=\"#\" id=\"edit_dt\" onclick=\"procesar_dt("+cp.Id+")\">Editar</a></td><td><a href=\"#\" id=\"eliminar_dt\" onclick=\"eliminar_dt("+@cp.Id+")\">Eliminar</a></td></tr>";
            }

            send.mensaje = result;
            return Json(send,JsonRequestBehavior.AllowGet);
        
        }

        [HttpGet]
        public JsonResult Delete_dt(Int32 id) {

            Resultado send = new Resultado();
            
            send.id = id;
            
            send.mensaje = "El detalle de tarifa " + id + " ha sido borrado";

            Costopromocion actual = almacen.CostopromocionSet.Where<Costopromocion>(po => po.Id == id).Single<Costopromocion>();

            almacen.DeleteObject(actual);

            almacen.SaveChanges();

            send.status = "Exito";
            
            return Json(send, JsonRequestBehavior.AllowGet);
        }

        [HttpGet]
        public JsonResult Delete_rec(Int32 id){
        
            Resultado send = new Resultado();
            send.id = id;
            send.status = "Exito";
            Recurso actual = almacen.RecursoSet.Where<Recurso>(rec => rec.cod_recurso == id).Single<Recurso>();
            send.mensaje = "El recurso " + actual.nombre + " ha sido eliminado exitosamente";
            almacen.DeleteObject(actual);
            almacen.SaveChanges();

                return Json(send,JsonRequestBehavior.AllowGet);
        
        }


        public ActionResult PDF(Int16 id)

    {    

      ControllerContext context = this.ControllerContext;

             GenPromocion genPromo = new GenPromocion();

            genPromo.promo = almacen.PromocionSet.Where<Promocion>(pr => pr.cod_promocion == id).Single<Promocion>();
            genPromo.det_tarifas = almacen.CostopromocionSet.Where<Costopromocion>(t => t.cod_promocion == id).ToList<Costopromocion>();
            genPromo.imagenes = almacen.RecursoSet.Where<Recurso>(rec => rec.solo_usado_en_cod == id).ToList<Recurso>();

            context.Controller.ViewData.Model = genPromo;

                
      

      byte[] buf = null;

      MemoryStream pdfTemp = new MemoryStream();

      ViewEngineResult result = ViewEngines.Engines.FindPartialView(context,"Vista2");

     if (result.View != null)

     {

        string htmlTextView = GetViewToString(context, result);

        iTextSharp.text.Document doc = new iTextSharp.text.Document();

        iTextSharp.text.pdf.PdfWriter writer = 

        iTextSharp.text.pdf.PdfWriter.GetInstance(doc, pdfTemp);

        writer.CloseStream = false;

        doc.Open();

        /*doc.Add(new iTextSharp.text.Paragraph(DateTime.Now.ToString()));*/

        AddHTMLText(doc, htmlTextView);

        doc.Close();

  

        buf = new byte[pdfTemp.Position];

        pdfTemp.Position = 0;

        pdfTemp.Read(buf, 0, buf.Length);

    }

    return File(buf, "application/pdf", "InformePromo"+id+".pdf");

  }

        private string GetViewToString(ControllerContext context, ViewEngineResult result)
        {

            string viewResult = "";

            ViewDataDictionary viewData = new ViewDataDictionary();

            viewData.Model = context.Controller.ViewData.Model;

            TempDataDictionary tempData = new TempDataDictionary();

            StringBuilder sb = new StringBuilder();

            using (StringWriter sw = new StringWriter(sb))
            {

                using (HtmlTextWriter output = new HtmlTextWriter(sw))
                {

                    ViewContext viewContext = new ViewContext(context, result.View, viewData, tempData, output);

                    result.View.Render(viewContext, output);

                }

                viewResult = sb.ToString();

            }

            return viewResult;

        }

        private void AddHTMLText(iTextSharp.text.Document doc, string html)
        {

            List<iTextSharp.text.IElement> htmlarraylist = HTMLWorker.ParseToList(

                            new StringReader(html), null);



            foreach (var item in htmlarraylist)
            {

                doc.Add(item);

            }

        }

        public ActionResult BuscarPromo(Int32 id) {


            List<Promocion> listapromo = almacen.PromocionSet.Where(pro => pro.cod_clasificacion == id).ToList<Promocion>();

            return View("Index",listapromo);
        }

        [HttpPost]
        public ActionResult Promo_Filtrar(FormCollection form) {

            List<Promocion> listapromo = new List<Promocion>();

            if (!form.Get("num_promo").Equals("") && form.Get("num_promo") != null) { 
                var num_promo = Int32.Parse(form.Get("num_promo"));
                listapromo = almacen.PromocionSet.Where(pro =>pro.cod_promocion == num_promo).ToList<Promocion>();
                return View("Index", listapromo);
            }


            if (form.Get("tags") != null && !form.Get("tags").Equals("")) 
            {

                List<Promocion> listapromoAux = new List<Promocion>();

                String inputTags = form.Get("tags");

                string[] tags = inputTags.Split(',','-');

                foreach (var tag in tags) {


                    List<Promocion> todasPromo = almacen.PromocionSet.ToList<Promocion>();
                    foreach (var prom in todasPromo) {

                        string[] tags2 = prom.tags.Split('-');

                        foreach (var tagtemp in tags2) { 
                            if (tagtemp.Replace(" ","").Equals(tag))
                                listapromoAux.Add(prom);
                        }
                        
                    }
                }

                listapromo.AddRange(listapromoAux);
                if (form.Get("fecha") != null && !form.Get("fecha").Equals("")) {

                    DateTime toDate = DateTime.Parse(form.Get("fecha"));

                    foreach (var promoc in listapromo) { 
                    
                       if(!(toDate >= promoc.valida_desde) && !(toDate<=promoc.valida_hasta)){
                        listapromo.Remove(promoc);
                       }
                    }

                    return View("Index", listapromo);
                    
                }
            }

            if (form.Get("fecha") != null && !form.Get("fecha").Equals(""))
            {
                listapromo = almacen.PromocionSet.ToList<Promocion>();
                DateTime toDate = DateTime.Parse(form.Get("fecha"));

                foreach (var promoc in listapromo)
                {

                    if (!(toDate >= promoc.valida_desde) && !(toDate <= promoc.valida_hasta))
                    {
                        listapromo.Remove(promoc);
                    }
                }
            }
            


            return View("Index",listapromo);
        }

        [HttpPost]
        public ActionResult Enviar_Correo(FormCollection formulario) {


           /* var num_promo = Int32.Parse(formulario.Get("idPromo"));

            var correo = formulario.Get("email");

            Webmail.SmtpServer = "";*/


            return View();
        }


        /*
         * EliminarPromo permite la eliminacion 
         * de promociones.
         *
         */
        public ActionResult EliminarPromo(Int32 id) {
            
            Promocion actual = almacen.PromocionSet.Where(pro => pro.cod_promocion == id).Single<Promocion>();
            actual.eliminado = true;
            if (TryUpdateModel(actual))
            {
                almacen.SaveChanges();
            }
            return RedirectToAction("Index", "Promocion");
        }



    }
}
